package com.study4j.oss.qiniu.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.google.gson.Gson;
import com.qiniu.common.Zone;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.study4j.oss.qiniu.model.QiniuProperties;

/**   
 * @description  七牛云存储配置
 * @author Jiangbin  
 * @date 2019年7月26日 下午2:34:35 
 * @version 1.0.0  
 */
@Configuration
@ConditionalOnProperty(prefix="oss",name = "type", havingValue = "qiniu")
//@EnableConfigurationProperties(QiniuProperties.class)
public class QiniuOssConfig {
	
	@Autowired
	private QiniuProperties qiniuProperties;

	/** 
	 * @description 华东机房,配置自己空间所在的区域
	 * @return
	 * @author Jiangbin
	 * @date 2019年7月26日 下午2:35:47
	 */
	@Bean
	public com.qiniu.storage.Configuration qiniuConfig() {
		return new com.qiniu.storage.Configuration(Zone.zone2());
	}


	/** 
	 * @description 构建一个七牛上传工具实例
	 * @return
	 * @author Jiangbin
	 * @date 2019年7月26日 下午2:35:24
	 */
	@Bean
	public UploadManager uploadManager() {
		return new UploadManager(qiniuConfig());
	}

	
	/** 
	 * @description 认证信息实例
	 * @return
	 * @author Jiangbin
	 * @date 2019年7月26日 下午2:35:13
	 */
	@Bean
	public Auth auth() {
		return Auth.create(qiniuProperties.getAccessKey(), qiniuProperties.getSecretKey());
	}

	/** 
	 * @description 构建七牛空间管理实例
	 * @return
	 * @author Jiangbin
	 * @date 2019年7月26日 下午2:35:37
	 */
	@Bean
	public BucketManager bucketManager() {
		return new BucketManager(auth(), qiniuConfig());
	}

	@Bean
	public Gson gson() {
		return new Gson();
	}

}
